/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package LlamadasTelefonicas;
 
import clienteSandraParada.Login;
import clienteSandraParada.Mensajeria;
import java.util.Calendar;
import java.util.Date;
import javax.swing.JLabel;


import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import service.CargarUsuario;

/**
 * Clase que tiene como objetivo mostrar los profesionales externos agregados en la base de datos,
 * en donde se pueden realizar algunas acciones.
 *
 * @author Franzel
 */
public class LlamadaTelefonica extends javax.swing.JPanel {

    DialogoInfoLlamadaTelefonica formulario;

    public LlamadaTelefonica() {
        initComponents();
        formulario = new DialogoInfoLlamadaTelefonica(null, true, this);
        this.actualizarTabla((java.util.List<service.LLamadaTelefonica>) listarLLamadaTelefonicas());

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jPanel5 = new javax.swing.JPanel();
        jLabel4 = new javax.swing.JLabel();
        jScrollPane4 = new javax.swing.JScrollPane();
        contenedorLlamadasTelefonicas = new javax.swing.JTable();
        datosABuscar = new javax.swing.JTextField();
        campoCosto = new javax.swing.JTextField();
        jLabel20 = new javax.swing.JLabel();
        jPanel6 = new javax.swing.JPanel();
        jLabel5 = new javax.swing.JLabel();
        jPanel7 = new javax.swing.JPanel();
        botonAgregar = new javax.swing.JButton();
        botonModificar = new javax.swing.JButton();
        botonVer = new javax.swing.JButton();

        setPreferredSize(new java.awt.Dimension(953, 603));

        jPanel5.setBackground(new java.awt.Color(255, 255, 255));
        jPanel5.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEmptyBorder(1, 1, 1, 1), "Llamadas Telefónicas", javax.swing.border.TitledBorder.CENTER, javax.swing.border.TitledBorder.TOP, new java.awt.Font("Tahoma", 0, 36))); // NOI18N

        jLabel4.setText("Buscar ");

        contenedorLlamadasTelefonicas.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Nombre profesional", "Nombre paciente", "Fecha", "Hora", "Costo llamada ($)"
            }
        ) {
            Class[] types = new Class [] {
                java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
            };
            boolean[] canEdit = new boolean [] {
                false, false, false, false, false
            };

            public Class getColumnClass(int columnIndex) {
                return types [columnIndex];
            }

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        contenedorLlamadasTelefonicas.getTableHeader().setReorderingAllowed(false);
        contenedorLlamadasTelefonicas.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                mouseClickedContenedorUsuarios(evt);
            }
        });
        jScrollPane4.setViewportView(contenedorLlamadasTelefonicas);

        datosABuscar.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                datosABuscarKeyReleased(evt);
            }
        });

        campoCosto.setEditable(false);
        campoCosto.setText("0");

        jLabel20.setText("Costo total de las llamadas  $");

        javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5);
        jPanel5.setLayout(jPanel5Layout);
        jPanel5Layout.setHorizontalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 951, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                .addGap(658, 658, 658)
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                        .addComponent(jLabel4)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(datosABuscar, javax.swing.GroupLayout.PREFERRED_SIZE, 176, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel5Layout.createSequentialGroup()
                        .addComponent(jLabel20)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(campoCosto, javax.swing.GroupLayout.PREFERRED_SIZE, 144, javax.swing.GroupLayout.PREFERRED_SIZE))))
        );
        jPanel5Layout.setVerticalGroup(
            jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel5Layout.createSequentialGroup()
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel4)
                    .addComponent(datosABuscar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane4, javax.swing.GroupLayout.DEFAULT_SIZE, 363, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(campoCosto)
                    .addComponent(jLabel20, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(29, 29, 29))
        );

        jPanel6.setBackground(new java.awt.Color(255, 255, 255));

        jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel5.setText("Área de mensajería");

        javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6);
        jPanel6.setLayout(jPanel6Layout);
        jPanel6Layout.setHorizontalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        jPanel6Layout.setVerticalGroup(
            jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jLabel5, javax.swing.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE)
        );

        jPanel7.setBackground(new java.awt.Color(255, 255, 255));

        botonAgregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Agregar.png"))); // NOI18N
        botonAgregar.setText("Agregar");
        botonAgregar.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
        botonAgregar.setMargin(new java.awt.Insets(2, 4, 2, 6));
        botonAgregar.setMaximumSize(new java.awt.Dimension(97, 43));
        botonAgregar.setMinimumSize(new java.awt.Dimension(97, 43));
        botonAgregar.setPreferredSize(new java.awt.Dimension(106, 51));
        botonAgregar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonAgregarActionPerformed(evt);
            }
        });

        botonModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Edit.png"))); // NOI18N
        botonModificar.setText("Modificar");
        botonModificar.setMargin(new java.awt.Insets(2, 4, 2, 6));
        botonModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonModificarActionPerformed(evt);
            }
        });

        botonVer.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos35X35/Previsualizar.png"))); // NOI18N
        botonVer.setText("Ver");
        botonVer.setMargin(new java.awt.Insets(2, 4, 2, 6));
        botonVer.setMaximumSize(new java.awt.Dimension(106, 51));
        botonVer.setMinimumSize(new java.awt.Dimension(106, 51));
        botonVer.setPreferredSize(new java.awt.Dimension(106, 51));
        botonVer.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botonVerActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout jPanel7Layout = new javax.swing.GroupLayout(jPanel7);
        jPanel7.setLayout(jPanel7Layout);
        jPanel7Layout.setHorizontalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel7Layout.createSequentialGroup()
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addComponent(botonAgregar, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonModificar, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(botonVer, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );
        jPanel7Layout.setVerticalGroup(
            jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel7Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel7Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(botonVer, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(botonModificar)
                    .addComponent(botonAgregar, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jPanel6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
        );
    }// </editor-fold>//GEN-END:initComponents

    /**
     * Método Action Performed del boton de Modificar, el cuál para ser utilizado
     * debe haber una fila con la información de un profesional externo seleccionada previamente.
     * Al realizarce el evento desplega el dialogoInfoLLamadaTelefonica mostrando los campos
     * a modificar.
     *
     * @param variable de tipo ActionEvent con el evento del boton
     **/
    private void botonModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonModificarActionPerformed
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if(p.isModificarLlamadaTelefonica()){
            if (-1 != this.contenedorLlamadasTelefonicas.getSelectedRow()) //Devuelve -1 si no esta seleccionada
            {

                int fila = this.contenedorLlamadasTelefonicas.getSelectedRow();

                this.formulario.setTitle("Modificar Llamada Telefónica");
                this.formulario.botonFormularioAccion.setText("Aceptar");
                this.formulario.botonFormularioAccion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/Aceptar.png")));
                //id=buscarIdAPartirDeUnRut(rut);
                String fecha = String.valueOf(this.contenedorLlamadasTelefonicas.getValueAt(fila, 2));
                String hora = String.valueOf(this.contenedorLlamadasTelefonicas.getValueAt(fila, 3));
                service.LLamadaTelefonica llamada=null;
                java.util.List<service.LLamadaTelefonica> llamadas = listarLLamadaTelefonicas();
                for (service.LLamadaTelefonica l : llamadas) {
                    if (fecha.equals(l.getFecha()) && hora.equals(l.getHora())) {
                        llamada=l;
                    }
                }
                formulario.llenarCampos(llamada);
                formulario.habilitarCampos(false);
                formulario.campoDuracion.setEditable(true);
                this.formulario.camposObligatoriosVisibles(true);
                this.formulario.getMensajesAdvertencia().setText("Área de mensajería");
                this.formulario.setVisible(true);
            } else {
                JOptionPane.showMessageDialog(this, "Debe seleccionar una fila!", "Advertencia", JOptionPane.WARNING_MESSAGE);
            }
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonModificarActionPerformed

    /**
     * Método Action Performed del boton de Eliminar, el cuál para ser utilizado
     * debe haber una o más filas seleccionadas previamente.
     * Al realizarce el evento se cambia el estado de los Profesionales Externos, ya que pasa a la papelera.
     *
     * @param variable de tipo ActionEvent con el evento del boton
     **/
    /**
     * Método Action Performed del boton de Agregar.
     * Al realizarce el evento desplega el dialogoInfoLLamadaTelefonica mostrando los campos
     * a llenar para poder agregar el Profesional Externo.
     *
     * @param variable de tipo ActionEvent con el evento del boton
     **/
    private void botonAgregarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonAgregarActionPerformed
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if(p.isAgregarLlamadaTelefonica()){
            this.formulario.limpiarCampos();
            this.formulario.habilitarCampos(true);
            this.formulario.setTitle("Agregar Llamada Telefónica");
            this.formulario.botonFormularioAccion.setText("Agregar");
            this.formulario.botonFormularioAccion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/Agregar.png")));
            agregarItemProfesional(listarUsuarios());
            formulario.campoFecha.setDate(obtenerFechaSistema());
            formulario.campoHora.setText(obtenerHoraSistema());
            this.formulario.getMensajesAdvertencia().setText("Área de mensajería");
            this.formulario.camposObligatoriosVisibles(true);
            this.formulario.setVisible(true);
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonAgregarActionPerformed

    /**
     * Método Action Performed del boton de Ver, el cuál para ser utilizado
     * debe haber una fila con la información de un Profesional Externo seleccionada previamente.
     * Al realizarce el evento desplega el dialogoInfoLLamadaTelefonica mostrando los datos, con la
     * particuralidad de que no se puede modificar la información.
     *
     * @param variable de tipo ActionEvent con el evento del boton
     **/
    private void botonVerActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_botonVerActionPerformed
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if(p.isVerLlamadaTelefonica()){
            accionVer();
            this.formulario.getMensajesAdvertencia().setText("Área de mensajería");
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_botonVerActionPerformed

    /**
     * Método MouseClicked de la tabla que contiene a los profesionales Externos.
     *
     * @param variable de tipo MouseEvent con el evento del mouse
     **/
    private void mouseClickedContenedorUsuarios(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mouseClickedContenedorUsuarios
        // TODO add your handling code here:
        DefaultTableModel modelo = (DefaultTableModel) this.contenedorLlamadasTelefonicas.getModel();
        int fila = contenedorLlamadasTelefonicas.rowAtPoint(evt.getPoint());
        if ((fila > -1) && evt.getClickCount() == 2) {
            accionVer();
        }
    }//GEN-LAST:event_mouseClickedContenedorUsuarios

    /**
     * Método Key Released del campo destinado para buscar datos.     *
     *
     * @param variable de tipo KeyEvent con el evento del campo
     **/
    private void datosABuscarKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_datosABuscarKeyReleased
        service.Privilegios p = (service.Privilegios) cargarPrivilegios(Login.getUser().getRut());
        if(p.isBuscarLlamadasTelefonicas()){
            if (!datosABuscar.getText().equals("")) {
                limpiarTabla();
                java.util.List<service.LLamadaTelefonica> lista = (java.util.List<service.LLamadaTelefonica>) this.filtrarLLamadasTelefonicas(datosABuscar.getText());
                actualizarTabla(lista);
            } else {
                limpiarTabla();
                actualizarTabla((java.util.List<service.LLamadaTelefonica>) listarLLamadaTelefonicas());
            }
        } else {
            JOptionPane.showMessageDialog(this, "No tiene permisos para esta acción, \n contacte al administrador para más información");
        }
    }//GEN-LAST:event_datosABuscarKeyReleased

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton botonAgregar;
    private javax.swing.JButton botonModificar;
    private javax.swing.JButton botonVer;
    public javax.swing.JTextField campoCosto;
    private javax.swing.JTable contenedorLlamadasTelefonicas;
    private javax.swing.JTextField datosABuscar;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JPanel jPanel5;
    private javax.swing.JPanel jPanel6;
    private javax.swing.JPanel jPanel7;
    private javax.swing.JScrollPane jScrollPane4;
    // End of variables declaration//GEN-END:variables

    /**
     * Método utilizado para realizar la acción del botón ver, la cuál también se puede
     * utilizar cuando se hace doble clic sobre una fila.
     */
    public void accionVer() {

        
        if (-1 != this.contenedorLlamadasTelefonicas.getSelectedRow()) //Devuelve -1 si no esta seleccionada
        {
            int fila = this.contenedorLlamadasTelefonicas.getSelectedRow();
            String fecha = String.valueOf(this.contenedorLlamadasTelefonicas.getValueAt(fila, 2));
            String hora = String.valueOf(this.contenedorLlamadasTelefonicas.getValueAt(fila, 3));
            service.LLamadaTelefonica llamada=null;
            java.util.List<service.LLamadaTelefonica> llamadas = listarLLamadaTelefonicas();
            for (service.LLamadaTelefonica l : llamadas) {
                if (fecha.equals(l.getFecha()) && hora.equals(l.getHora())) {
                    llamada=l;
                }
            }
          
            //tengo lista y busco en los servicios el rut, muestro info
            this.formulario.setTitle("Ver Llamada Telefonica");
            this.formulario.botonFormularioAccion.setText("Exportar");
            this.formulario.botonFormularioAccion.setIcon(new javax.swing.ImageIcon(getClass().getResource("/GUI/Img/Iconos16X16/pdf.png")));
            this.formulario.camposObligatoriosVisibles(false);
            formulario.llenarCampos(llamada);
            formulario.habilitarCampos(false);
            
            this.formulario.setVisible(true);
        } else {
            JOptionPane.showMessageDialog(this, "Debe seleccionar una fila!", "Advertencia", JOptionPane.WARNING_MESSAGE);
        }
    }

    /**
     * Método utilizado para actualizar los datos de la tabla que muestra todos los profesionales externos,
     * de acuerdo a la información que se encuentra en la base de datos.
     *
     * @param LlamadaTelefonica de tipo service.LlamadaTelefonica que contiene al profesional.
     */
    public void actualizarTabla(java.util.List<service.LLamadaTelefonica> LLamadaTelefonica) {
        limpiarTabla();
        java.util.List<service.LLamadaTelefonica> llamada = LLamadaTelefonica;
        int costoTotal=0;

        for (int i = 0; i < llamada.size(); i++) {
            if (llamada.get(i).isActivo() == true) {
                int fila = this.contenedorLlamadasTelefonicas.getRowCount();
                DefaultTableModel modelo = (DefaultTableModel) this.contenedorLlamadasTelefonicas.getModel();
                modelo.addRow(new String[4]);
                for (int col = 0; col < this.contenedorLlamadasTelefonicas.getColumnCount(); col++) {
                    service.Usuario profesional= (service.Usuario) cargarUsuario(llamada.get(i).getRutProfesional());
                    service.Paciente paciente = (service.Paciente) cargarPaciente(llamada.get(i).getRutPaciente());
                    this.contenedorLlamadasTelefonicas.setValueAt(profesional.getNombres()+" "+ profesional.getApellidoPaterno()+" "+ profesional.getApellidoMaterno(), fila, 0);
                    this.contenedorLlamadasTelefonicas.setValueAt(paciente.getNombres()+" "+ paciente.getApellidoPaterno()+" "+ paciente.getApellidoMaterno(), fila, 1);
                    this.contenedorLlamadasTelefonicas.setValueAt(llamada.get(i).getFecha(), fila, 2);
                    this.contenedorLlamadasTelefonicas.setValueAt(llamada.get(i).getHora(), fila, 3);
                    this.contenedorLlamadasTelefonicas.setValueAt(llamada.get(i).getCosto(), fila, 4);
                }
                if(!llamada.get(i).getCosto().equals(""))
                    costoTotal=Integer.parseInt(llamada.get(i).getCosto())+costoTotal;
            }

        }
        this.campoCosto.setText(Integer.toString(costoTotal));
    }

    /**
     * Método utilizado para limpiar la tabla que contiene la información
     * de los profesionales externs que están en la base de datos.
     */
    public void limpiarTabla() {
        for (int i = this.contenedorLlamadasTelefonicas.getRowCount(); i > 0; i--) {
            DefaultTableModel temp = (DefaultTableModel) this.contenedorLlamadasTelefonicas.getModel();
            temp.removeRow(temp.getRowCount() - 1);
        }
    }

    public JTable getContenedorLlamadasTelefonicas() {
        return contenedorLlamadasTelefonicas;
    }

    public JLabel getjLabel5() {
        return jLabel5;
    }

    public void agregarItemProfesional(java.util.List<service.Usuario> usuarios) {

        this.formulario.campoNombreProfesional.removeAllItems();
        this.formulario.campoNombreProfesional.addItem("Seleccionar");
        for (service.Usuario u : usuarios) {
            if (u.getTipoCuenta().equals("Profesional")) {
                this.formulario.campoNombreProfesional.addItem(u.getNombres() + " " + u.getApellidoPaterno() + " " + u.getApellidoMaterno());
            }
        }
    }

    private Date obtenerFechaSistema() {
        Calendar c = Calendar.getInstance();
        String strFecha = Integer.toString(c.get(Calendar.DATE)) + "-"
                + Integer.toString(c.get(Calendar.MONTH) + 1) + "-"
                + Integer.toString(c.get(Calendar.YEAR));
        return formulario.stringToDate(strFecha);

    }

    private String obtenerHoraSistema() {
        Calendar c= Calendar.getInstance();
         String hora =(Integer.toString(c.get(Calendar.HOUR_OF_DAY))+ ":"
                + Integer.toString(c.get(Calendar.MINUTE)) + ":"
                + Integer.toString(c.get(Calendar.SECOND))+" hrs.");
         return hora;
    }


    /*Aqui comienzan los métodos correspondientes a los servicios*/
    /**
     * Método registra en la bitácora la acción realizada en el sistema
     **/
    private static Long registrar(service.Usuario usuario, java.lang.String modulo, java.lang.String accion, java.lang.String valorAnterior, java.lang.String valorNuevo) {
        service.BitacoraWSService service = new service.BitacoraWSService();
        service.BitacoraWS port = service.getBitacoraWSPort();
        return port.registrar(usuario, modulo, accion, valorAnterior, valorNuevo);
    }

    /**
     * Método que modifica el profesional externo que esta registrado en la Base de Datos,
     * a través del servicio modificarLLamadaTelefonica.
     * @param variable de tipo service.LlamadaTelefonica LLamada arg0 que es el profesional externo a modificar.
     * @return variable de tipo boolean que indica si se realizó (true)
     * o no (false) la actualización del profesional externo.
     **/
    private static boolean modificarLLamadaTelefonica(service.LLamadaTelefonica LLamadaTelefonica) {
        service.LLamadaTelefonicaWSService service = new service.LLamadaTelefonicaWSService();
        service.LLamadaTelefonicaWS port = service.getLLamadaTelefonicaWSPort();
        return port.modificarLLamadaTelefonica(LLamadaTelefonica);
    }

    /**
     * Método que retorna la lista de Profeisonales Externos que se ha filtrado de acuerdo
     * a un parámetro a buscar.
     * @param String buscar
     * @return variable de tipo java.util.List<service.LlamadaTelefonica> que contiene la
     * lista de usuarios.
     **/
    private static java.util.List<service.LLamadaTelefonica> filtrarLLamadasTelefonicas(java.lang.String buscar) {
        service.LLamadaTelefonicaWSService service = new service.LLamadaTelefonicaWSService();
        service.LLamadaTelefonicaWS port = service.getLLamadaTelefonicaWSPort();
        return port.filtrarLLamadasTelefonicas(buscar);
    }

    /**
     * Método que retorna la lista de Profesionales Externos que estan en la Base de Datos,
     * a través del servicio listarProfesionalesExternos.
     * @return variable de tipo java.util.List<service.LlamadaTelefonica> que contiene la
     * lista de profesionales externos.
     **/
    private static java.util.List<service.LLamadaTelefonica> listarLLamadaTelefonicas() {
        service.LLamadaTelefonicaWSService service = new service.LLamadaTelefonicaWSService();
        service.LLamadaTelefonicaWS port = service.getLLamadaTelefonicaWSPort();
        return port.listarLLamadaTelefonicas();
    }

    /**
     * Método que carga el profesional externo de la Base de Datos, a partir de un rut y
     * a través del servicio cargarLLamadaTelefonica.
     * @param variable de tipo String correspondiente al rut profesional externo a cargar.
     * @return variable de tipo Object que corresponde al LlamadaTelefonica cargado.
     **/
    private static Object cargarLLamadaTelefonica(java.lang.Long id) {
        service.LLamadaTelefonicaWSService service = new service.LLamadaTelefonicaWSService();
        service.LLamadaTelefonicaWS port = service.getLLamadaTelefonicaWSPort();
        return port.cargarLLamadaTelefonica(id);
    }

    private static java.util.List<service.Usuario> listarUsuarios() {
        service.UsuarioWSService service = new service.UsuarioWSService();
        service.UsuarioWS port = service.getUsuarioWSPort();
        return port.listarUsuarios();
    }

    private static Object cargarPrivilegios(java.lang.String rut) {
        service.PrivilegiosWS_Service service = new service.PrivilegiosWS_Service();
        service.PrivilegiosWS port = service.getPrivilegiosWSPort();
        return port.cargarPrivilegios(rut);
    }

    private static Object cargarUsuario(java.lang.String rut) {
        service.UsuarioWSService service = new service.UsuarioWSService();
        service.UsuarioWS port = service.getUsuarioWSPort();
        return port.cargarUsuario(rut);
    }

    private static Object cargarPaciente(java.lang.String rut) {
        service.PacienteWS_Service service = new service.PacienteWS_Service();
        service.PacienteWS port = service.getPacienteWSPort();
        return port.cargarPaciente(rut);
    }
    
    
    
    
}
